<template>
  <canvas id="clock" width="500" height="500">cccc</canvas>
</template>

<script lang="ts" setup>
// https://www.bootstrapmb.com/tag/shizhong?page=1
// https://blog.csdn.net/r657225738/article/details/108460875
import { onMounted } from "vue";

onMounted(() => {
  var canvas = document.getElementById("clock");
  var ctx = canvas.getContext("2d");

  // ctx.strokeStyle = "#00ffff";
  ctx.strokeStyle = "rgba(00, 255, 255, 0.1)";
  ctx.lineWidth = 17;
  ctx.shadowBlur = 15;
  ctx.shadowColor = "rgba(00, 255, 255, 0.1)";

  function degToRad(degree) {
    var factor = Math.PI / 180;
    return degree * factor;
  }

  function renderTime() {
    var now = new Date();
    var today = now.toDateString();
    var time = now.toLocaleTimeString();
    var hrs = now.getHours();
    var min = now.getMinutes();
    var sec = now.getSeconds();
    var mil = now.getMilliseconds();
    var smoothsec = sec + mil / 1000;
    var smoothmin = min + smoothsec / 60;

    //Background
    var gradient = ctx.createRadialGradient(250, 250, 5, 250, 250, 300);
    gradient.addColorStop(0, "#03303a");
    gradient.addColorStop(1, "black");
    // ctx.fillStyle = gradient;
    ctx.fillStyle = '#060e1a';
    ctx.fillStyle = 'rgba (6, 14, 26, 0.5)';
    // ctx.fillStyle = 'transparent'; // 设置透明背景
    ctx.fillRect(0, 0, 500, 500);
    //Hours
    ctx.beginPath();
    ctx.arc(250, 250, 200, degToRad(270), degToRad(hrs * 30 - 90));
    ctx.stroke();
    //Minutes
    ctx.beginPath();
    ctx.arc(250, 250, 170, degToRad(270), degToRad(smoothmin * 6 - 90));
    ctx.stroke();
    //Seconds
    ctx.beginPath();
    ctx.arc(250, 250, 140, degToRad(270), degToRad(smoothsec * 6 - 90));
    ctx.stroke();
    //Date
    ctx.font = "25px Helvetica";
    ctx.fillStyle = "rgba(00, 255, 255, 0.1)";
    ctx.fillText(today, 175, 250);
    //Time
    ctx.font = "25px Helvetica Bold";
    ctx.fillStyle = "rgba(00, 255, 255, 0.1)";
    ctx.fillText(time + ":" + mil, 175, 280);
  }
  setInterval(renderTime, 40);
});
</script>
<style scoped>
#clock{
  z-index: 100000;
  background: none;
}
</style>
